package com.csti.delio.produccion.server.clientes;

import java.sql.SQLException;
import java.util.List;

import com.csti.delio.main.server.Conexion;
import com.csti.delio.main.server.GxtGridPaginate;
import com.csti.delio.produccion.client.clientes.Cliente;
import com.csti.delio.produccion.client.clientes.ClienteService;
import com.extjs.gxt.ui.client.data.BasePagingLoadResult;
import com.extjs.gxt.ui.client.data.FilterPagingLoadConfig;
import com.extjs.gxt.ui.client.data.PagingLoadResult;
import com.google.gwt.user.server.rpc.RemoteServiceServlet;
import com.ibatis.sqlmap.client.SqlMapClient;

public class ClienteServiceImpl extends RemoteServiceServlet implements ClienteService {
   SqlMapClient sqlMap; 
   Conexion con;
   
	public ClienteServiceImpl(){
		con    = new Conexion();
		sqlMap = con.getSqlMap();
	}
	

	@Override
	public PagingLoadResult<Cliente> paginateCliente(
			FilterPagingLoadConfig config) {
		GxtGridPaginate paginate = new GxtGridPaginate();
		paginate.config = config;
		paginate.setLimit();
		if(paginate.order.equals("")){
			paginate.order = " order by id desc";
		}
		List<Cliente> data = null;
		try {
			data = sqlMap.queryForList("paginateCliente", paginate);
		} catch (SQLException e) {
			e.printStackTrace();
		}
		
		return new BasePagingLoadResult<Cliente>(data, paginate.offset, count(paginate));
	}
	
	public Integer count(GxtGridPaginate paginate){
		Integer count = null;
		try {
			count = (Integer) sqlMap.queryForObject("countCliente", paginate);
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return count;
	}
	
	
	@Override
	public boolean guardar(Cliente c) {
	   boolean var = false;
	   try{
		   sqlMap.insert("insertClientes",c);
		   var = true;
	   }catch(Exception e){
		   e.printStackTrace();
	   }
		return var;
	}

	@Override
	public List<Cliente> ListarClientes() {
		List<Cliente> cl = null;
		try{
			cl = sqlMap.queryForList("ListClientes");
		}catch(Exception e){
			e.printStackTrace();
		}
		return cl;
	}

	
	public boolean actualizar(Cliente cl){
		boolean var = false;
		
		try{
		   sqlMap.update("updateClientes",cl);	
		   var = true;	
		}catch(Exception e){
			e.printStackTrace();
		}
		return var;
	}
	
	public boolean eliminar(Integer id){
		boolean var = false;
		try{
			sqlMap.delete("deleteClientes",id);
			var = true;
		}catch(Exception e){
			e.printStackTrace();
		}
		return var;
	}

}
